<pre class='metadata'>
Title: WebCodecs Codec Registry
Repository: w3c/webcodecs
Status: NOTE-ED
Shortname: webcodecs-codec-registry
Level: none
Group: mediawg
ED: https://w3c.github.io/webcodecs/codec_registry.html
TR: https://www.w3.org/TR/webcodecs-codec-registry/
Editor: Paul Adenot, w3cid 62410, Mozilla https://www.mozilla.org/
Editor: Eugene Zemtsov, w3cid 139375, Google LLC https://www.google.com/
Former Editor: Bernard Aboba, w3cid 65611, Microsoft Corporation https://www.microsoft.com/
Former Editor: Chris Cunningham, w3cid 114832, Google Inc. https://www.google.com/

Boilerplate: omit conformance

Abstract: This registry is intended to enhance interoperability among
    implementations and users of [[WEBCODECS]]. In particular, this
    registry provides the means to identify and avoid collisions among codec
    strings and provides a mechanism to define codec-specific members of
    [[WEBCODECS]] codec configuration dictionaries.

    This registry is not intended to include any information on whether a codec
    format is encumbered by intellectual property claims. Implementers and
    users are advised to seek appropriate legal counsel in this matter if they
    intend to implement or use a specific codec format. Implementers of
    WebCodecs are not required to support any particular codec nor registry
    entry.

    This registry is non-normative.

Markup Shorthands:css no, markdown yes, dfn yes
!Participate: <a href="https://github.com/w3c/webcodecs">Git Repository.</a>
!Participate: <a href="https://github.com/w3c/webcodecs/issues/new">File an issue.</a>
!Version History: <a href="https://github.com/w3c/webcodecs/commits">https://github.com/w3c/webcodecs/commits</a>
</pre>


Organization {#organization}
============================

This registry maintains a mapping between <a>codec strings</a> and registration
specifications as described below.

Registration Entry Requirements {#registration-entry-requirements}
==================================================================

1. Each entry must include a unique <a>codec string</a>, a common name string, and a
    link to the codec's specification.
2. The <a>codec string</a> must be crafted as follows:
    1. If the <a>codec string</a> contains a fixed prefix with variable suffix values,
        the suffix must be represented by an asterisk and the registration's
        public specification must describe how to fully qualify the variable
        portion of the string.
    2. Otherwise, if the codec is recognized by multiple strings, a single
        preferred string should be listed and the registration's specification
        must list the other allowed strings.
    3. Otherwise, the codec is identified by a simple fixed string.
3. Each registration's specification must include a sequence of sections
    describing:
    1. Recognized codec strings
    2. {{EncodedAudioChunk}} or {{EncodedVideoChunk}} internal data
    3. {{AudioDecoderConfig}} or {{VideoDecoderConfig}} description bytes
    4. Expectations for {{EncodedAudioChunk}} or {{EncodedVideoChunk}}
        {{EncodedVideoChunk/[[type]]}}
4. Where applicable, a registration specification may include a section
    describing extensions to {{VideoEncoderConfig}} or {{AudioEncoderConfig}}
    dictionaries.
5. Candidate entries must be announced by filing an issue in the
    [WebCodecs GitHub issue tracker](https://github.com/w3c/webcodecs/issues/)
    so they can be discussed and evaluated for compliance before being added to
    the registry. The Media Working Group may seek expertise from outside the
    Working Group as part of its evaluation, e.g., from the codec specification
    editors or relevant standards group. If the codec specification is not
    publicly available, it must be made available to the Working Group for
    evaluation. If the Working Group reaches consensus to accept the candidate,
    a pull request should be drafted (either by editors or by the party
    requesting the candidate registration) to register the candidate.
    The registry editors will review and merge the pull request.
6. Existing entries cannot be deleted or deprecated. They may be changed after
    being published through the same process as candidate entries. Possible
    changes include expansion of the <a>codec string</a> to better qualify the codec,
    adjustments to the codec name string, and modification of the link to the
    codec's specification.


Audio Codec Registry {#audio-codec-registry}
============================================

<table class='data'>
  <tr>
    <td>**codec string**</td>
    <td>**common name**</td>
    <td>**public specification**</td>
  </tr>
  <tr>
    <td>flac</td>
    <td>Flac</td>
    <td>[FLAC codec registration](https://www.w3.org/TR/webcodecs-flac-codec-registration/) [[WEBCODECS-FLAC-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>mp3</td>
    <td>MP3</td>
    <td>[MP3 WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-mp3-codec-registration/)
    [[WEBCODECS-MP3-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>mp4a.\*</td>
    <td>AAC</td>
    <td>[AAC WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-aac-codec-registration/)
    [[WEBCODECS-AAC-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>opus</td>
    <td>Opus</td>
    <td>[Opus WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-opus-codec-registration/)
    [[WEBCODECS-OPUS-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>vorbis</td>
    <td>Vorbis</td>
    <td>[Vorbis WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-vorbis-codec-registration/)
    [[WEBCODECS-VORBIS-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>ulaw</td>
    <td>u-law PCM</td>
    <td>[u-law PCM WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-ulaw-codec-registration/)
    [[WEBCODECS-ULAW-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>alaw</td>
    <td>A-law PCM</td>
    <td>[A-law PCM WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-alaw-codec-registration/)
    [[WEBCODECS-ALAW-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>pcm-\*</td>
    <td>Linear PCM</td>
    <td>[Linear PCM WebCodecs
      Registration](https://www.w3.org/TR/webcodecs-pcm-codec-registration/)
    [[WEBCODECS-PCM-CODEC-REGISTRATION]]</td>
  </tr>
</table>

Video Codec Registry {#video-codec-registry}
============================================

<table class='data'>
  <tr>
    <td>**codec string**</td>
    <td>**common name**</td>
    <td>**specification**</td>
  </tr>
  <tr>
    <td>av01.\*</td>
    <td>AV1</td>
    <td>[AV1 codec registration](https://www.w3.org/TR/webcodecs-av1-codec-registration/) [[WEBCODECS-AV1-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>avc1.\*, avc3.\*</td>
    <td>AVC / H.264</td>
    <td>[AVC (H.264) WebCodecs Registration](https://www.w3.org/TR/webcodecs-avc-codec-registration/) [[WEBCODECS-AVC-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>hev1.\*, hvc1.\*</td>
    <td>HEVC / H.265</td>
    <td>[HEVC (H.265) WebCodecs Registration](https://www.w3.org/TR/webcodecs-hevc-codec-registration/) [[WEBCODECS-HEVC-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>vp8</td>
    <td>VP8</td>
    <td>[VP8 codec registration](https://www.w3.org/TR/webcodecs-vp8-codec-registration/) [[WEBCODECS-VP8-CODEC-REGISTRATION]]</td>
  </tr>
  <tr>
    <td>vp09.\*</td>
    <td>VP9</td>
    <td>[VP9 codec registration](https://www.w3.org/TR/webcodecs-vp9-codec-registration/) [[WEBCODECS-VP9-CODEC-REGISTRATION]]</td>
  </tr>
</table>

Privacy Considerations {#privacy-considerations}
==========================================================================

Please refer to the section [[WEBCODECS#privacy-considerations|Privacy
Considerations]] in [[WEBCODECS]].

Security Considerations {#security-considerations}
==========================================================================

Please refer to the section [[WEBCODECS#security-considerations|Security
Considerations]] in [[WEBCODECS]].
